module("Foreach", package.seeall)

function ListIter(t)
    local i=0
    local n=table.getn(t)
    return function()
        i=i+1
        if i<=n then return t[i] end
        return nil
    end
end

--列表方式遍历table，对每个元素执行fn
function ForeachList(t, fn)
    local tmp
    local iter = ListIter(t)
    while true do
        local element=iter()
        if element==nil then break end
        fn(element)
    end
end

--遍历table所以k，v 对每对kv执行fn
function ForeachTable(t, fn)
    for k, v in pairs(t) do
        fn(k, v)
    end
end